package com.cans.lightning.business.system.entity;

import com.cans.lightning.base.entity.BaseEntity;
import com.cans.lightning.business.system.enums.ResetRuleEnum;
import lombok.Getter;
import lombok.Setter;
import org.beetl.sql.annotation.entity.Column;
import org.beetl.sql.annotation.entity.Table;

import java.math.BigInteger;
import java.time.ZonedDateTime;

/**
 * 编码生成规则配置
 *
 * @author cans
 * @date 2021-04-22 10:50
 **/
@Getter
@Setter
@Table(name = "sys_code_generate_config")
public class CodeGenerateConfig extends BaseEntity {

    /**
     * 编号
     */
    @Column("code")
    private String code;

    /**
     * 名称
     */
    @Column("name")
    private String name;

    /**
     * 前缀
     */
    @Column("prefix")
    private String prefix;

    /**
     * 年
     */
    @Column("year")
    private Integer year;

    /**
     * 月
     */
    @Column("month")
    private Integer month;

    /**
     * 日
     */
    @Column("day")
    private Integer day;

    /**
     * 流水号长度
     */
    @Column("number_length")
    private Integer numberLength;

    /**
     * 重置序号规则,使用枚举见 {@link ResetRuleEnum}
     */
    @Column("reset_rule")
    private Integer resetRule;

    /**
     * 初始号
     */
    @Column("init_number")
    private BigInteger initNumber;

    /**
     * 当前流水号
     */
    @Column("current_number")
    private BigInteger currentNumber;

    /**
     * 增量
     */
    @Column("increment")
    private Integer increment;

    /**
     * 最后一次生成时间,用于重置编号
     */
    @Column("last_generate_date_time")
    private ZonedDateTime lastGenerateDateTime;
}
